home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / ip / ka9q / src.arc / SMTP.H < prev    next >
C/C++ Source or Header  |  1989-08-19  |  3KB  |  96 lines

  1. #define SMTPTRACE            /* enable tracing for smtp */
  2. #define MAXSESSIONS    10        /* most connections allowed */
  3. #define JOBNAME        13        /* max size of a job name with null */
  4. #define    LINELEN        128
  5. #define SLINELEN    32
  6. #define MBOXLEN        8        /* max size of a mail box name */
  7.  
  8. /* types of address used by smtp in an address list */
  9. #define BADADDR    0
  10. #define LOCAL    1
  11. #define DOMAIN    2
  12.  
  13. /* a list entry */
  14. struct list {
  15.     struct list *next;
  16.     char *val;
  17.     char type;
  18. };
  19.  
  20. /* Per-session control block  used by smtp server */
  21. struct smtpsv {
  22.     int s;            /* the socket for this connection */
  23.     char *system;        /* Name of remote system */
  24.     char *from;        /* sender address */
  25.     struct list *to;    /* Linked list of recipients */
  26.     FILE *data;        /* Temporary input file pointer */
  27. };
  28.  
  29. /* used by smtpcli as a queue entry for a single message */
  30. struct smtp_job {
  31.     struct     smtp_job *next;    /* pointer to next mail job for this system */
  32.     char    jobname[9];    /* the prefix of the job file name */
  33.     char    *from;        /* address of sender */
  34.     struct list *to;    /* Linked list of recipients */
  35. };
  36.  
  37. /* control structure used by an smtp client session */
  38. struct smtpcli {
  39.     int     s;        /* connection socket */
  40.     int32    ipdest;        /* address of forwarding system */
  41.     char     state;        /* state machine placeholder */
  42. #define CLI_INIT_STATE    0
  43. #define CLI_OPEN_STATE    1
  44. #define    CLI_HELO_STATE    2
  45. #define CLI_MAIL_STATE    3
  46. #define CLI_RCPT_STATE    4
  47. #define    CLI_SEND_STATE    5
  48. #define    CLI_UNLK_STATE    6
  49. #define CLI_QUIT_STATE    7
  50. #define CLI_IDLE_STATE    8
  51.     char    *wname;        /* name of workfile */
  52.     char    *tname;        /* name of data file */
  53.     char    buf[LINELEN];    /* Input buffer */
  54.     char    cnt;        /* Length of input buffer */
  55.     FILE    *tfile;
  56.     struct    smtp_job *jobq;
  57.     char    goodrcpt;    /* are any of the rcpt ok */
  58.     int    rcpts;        /* number of unacked rcpt commands */
  59.     struct    list     *errlog;    
  60. };
  61.  
  62. /* smtp server routing mode */
  63. #define    QUEUE    1
  64.  
  65. #define    NULLLIST    (struct list *)0
  66. #define    NULLSMTPSV    (struct smtpsv *)0
  67. #define    NULLSMTPCLI    (struct smtpcli *)0
  68. #define NULLJOB        (struct smtp_job *)0
  69.  
  70. extern int Smtpmode;
  71. extern char *Mailspool;
  72. extern char *Maillog;
  73. extern char *Mailqdir;        /* Outgoing spool directory */
  74. extern char *Routeqdir;    /* spool directory for a router program */
  75. extern char *Mailqueue;    /* Prototype of work file */
  76. extern char *Maillock;        /* Mail system lock */
  77. extern char Hostname[];
  78. extern char *Alias;        /* File of local aliases */
  79.  
  80. /* In smtpserv.c: */
  81. char *ptime __ARGS((long *t));
  82. long get_msgid __ARGS((void));
  83. int validate_address __ARGS((char *s));
  84. int queuejob __ARGS((FILE *dfile,char *host,char *to,char *from));
  85. struct list *addlist __ARGS((struct list **head,char *val,int type));
  86.  
  87. int mailuser __ARGS((FILE *data,char *from,char *to));
  88.  
  89. /* In smtpcli.c: */
  90. int smtptick __ARGS((void *t));
  91. int mlock __ARGS((char *dir,char *id));
  92. int rmlock __ARGS((char *dir,char *id));
  93. void del_list __ARGS((struct list *lp));
  94. int32 mailroute __ARGS((char *dest));
  95.  
  96.